Сохрани проверенный расчёт как отдельную повторяемую программу plan_fact.py и краткий README-запуска.md. Пока ТОЛЬКО создай эти два файла, прочитай их обратно и покажи полный код и SHA-256. Не запускай новый анализ данных и не меняй исходные файлы/полную agent-instruction.md. Требования к plan_fact.py: - Python 3, только стандартная библиотека:argparse, csv, json, sys, re, pathlib, collections, hashlib. Без сети, установки пакетов, внешних процессов, eval/exec и чтения настроек аккаунта. - CLI: --period YYYY-MM --sales PATH --cogs PATH --opex PATH --out DIR. Не зашивать месяц, имена филиалов, суммы или ID примеров в логику. UTF-8-sig; заголовок CSV — строка 1, первая запись — строка 2. - Три входа: обязательные row_id, period, branch, plan_rub, actual_rub, currency; дополнительные operation_date, document_no, category, description. Проверить поля, непустые значения, один целевой период, RUB, целые суммы, набор филиалов. - Повтор row_id сравнить по ВСЕМ полям исходной записи. Любое различие — конфликт:STOP до расчёта, даже при переданном разрешении. Точный повтор без явного решения —STOP. Источники не изменять. - Только конкретное разрешение: повторяемый параметр --allow-exact-duplicate BASENAME:ROW_ID. Он относится к одному фактическому входному файлу/ID; остальные повторы не исключать. Старое разрешение не сохранять в программе. При точном повторе после разрешения учитывать одну копию, с записью строк и решения в протокол. - На STOP:код выхода 2; записать только Протокол_.json со status=STOP, причиной/файлом/ID/номерами строк и различиями; сводную таблицу не создавать. Выходную папку выбирать новую; не выдавать старый результат за новый. - При успехе:код выхода 0; Сводная_таблица_.csv с колонками Категория, sales_p, sales_a, cogs_p, cogs_a, opex_p, opex_a, res_p, res_a, d_sales, d_cogs, d_opex, d_res; строки филиалов и ИТОГО. Все суммы — целые рубли. Результат=sales−cogs−opex; delta=actual−plan; мост=d_sales−d_cogs−d_opex=d_res. Проверить сумму филиалов и мост для каждого филиала/итога. Протокол_.json со status=OK, периодом, фактическими входами/их SHA-256, счётчиками строк, дублями/решением и проверками. Записку руководителю составляет агент отдельно по готовой таблице. README:назначение, входы/выходы, требованияPython 3, команды с параметрами без секретов, значениеSTOP/кодов 0 и 2, где указать конкретное решение по дублю. Сохранить реальные файлы в рабочем пространстве. Не заявлять прохождение тестов:сначала человек прочитает и проверит код. Желательно до 180 строк понятного кода; не сокращай контроль ради этого ориентира.